{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Setup"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import random\n",
    "import h5py\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "from sklearn.metrics.pairwise import pairwise_distances\n",
    "from imblearn.over_sampling import SMOTE\n",
    "\n",
    "from pyts.image import GramianAngularField"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "class ArrhythmiaLabels:\n",
    "    labels = {\n",
    "        0: \"N\",\n",
    "        1: \"S\",\n",
    "        2: \"V\",\n",
    "        3: \"F\",\n",
    "        4: \"Q\",\n",
    "    }\n",
    "    size = 5\n",
    "\n",
    "def visualize_raw_ecg(data: dict[str, pd.DataFrame]) -> None:\n",
    "    sns.set_style(\"whitegrid\")\n",
    "    sns.set_palette(\"husl\")\n",
    "\n",
    "    features = data[\"features\"]\n",
    "    labels   = data[\"labels\"]\n",
    "\n",
    "    example_idx = []\n",
    "    for label in range(ArrhythmiaLabels.size):\n",
    "        indices = labels[labels == label].index\n",
    "        index   = random.choice(indices)\n",
    "        example_idx.append(index)\n",
    "\n",
    "    example_features = features.iloc[example_idx]\n",
    "\n",
    "    _, ax = plt.subplots(1, ArrhythmiaLabels.size, figsize=(20, 4))\n",
    "    for i in range(ArrhythmiaLabels.size):\n",
    "        ax[i].plot(example_features.iloc[i])\n",
    "        ax[i].set_title(f\"{ArrhythmiaLabels.labels[i]}\")\n",
    "        ax[i].grid(False)\n",
    "\n",
    "    plt.show()\n",
    "\n",
    "def visualize_image(image):\n",
    "    plt.imshow(image, cmap=\"gray\")\n",
    "    plt.show()\n",
    "\n",
    "def batch_value(value: int, batch_size: int) -> list[int]:\n",
    "    full_batches = [batch_size] * (value // batch_size)\n",
    "    remainder    = value % batch_size\n",
    "\n",
    "    if remainder != 0:\n",
    "        full_batches += [remainder]\n",
    "        \n",
    "    return full_batches\n",
    "\n",
    "def gaf(samples):\n",
    "    gaf = GramianAngularField(method=\"summation\")\n",
    "    return gaf.fit_transform(samples)\n",
    "\n",
    "def recurrence_plot(samples, eps: float = 0.1, steps: int = 10):\n",
    "    results = []\n",
    "    for s in samples.values:\n",
    "        d = pairwise_distances(s[:, None])\n",
    "        d = d / eps\n",
    "        d[d > steps] = steps\n",
    "        results.append(d/5. - 1)\n",
    "    return results\n",
    "\n",
    "def get_quantiles(min_value=0, max_val=1, k=10):\n",
    "    c = (max_val - min_value)/k\n",
    "    b = min_value + c\n",
    "    d = []\n",
    "    for i in range(1, k):\n",
    "        d.append(b)\n",
    "        b += c\n",
    "    d.append(max_val)\n",
    "    return d\n",
    "\n",
    "quantiles = get_quantiles()\n",
    "\n",
    "def value_to_quantile(x):\n",
    "    for i, k in enumerate(quantiles):\n",
    "        if x <= k:\n",
    "            return i\n",
    "    return 0\n",
    "\n",
    "def mtf(samples, size=10):\n",
    "    results = []\n",
    "\n",
    "    for x in samples.values:\n",
    "        q = np.vectorize(value_to_quantile)(x)\n",
    "        r = np.zeros((q.shape[0], q.shape[0]))\n",
    "        y = np.zeros((size, size))\n",
    "        for i in range(x.shape[0] - 1):\n",
    "            y[q[i], q[i + 1]] += 1\n",
    "        y = y / y.sum(axis=1, keepdims=True)\n",
    "        y[np.isnan(y)] = 0\n",
    "        \n",
    "        for i in range(r.shape[0]):\n",
    "            for j in range(r.shape[1]):\n",
    "                r[i, j] = y[q[i], q[j]]\n",
    "        \n",
    "        results.append(r/5. - 1)\n",
    "        \n",
    "    return results\n",
    "\n",
    "def transform_data(output_path: str, data: dict[str, pd.DataFrame], batch_size: int) -> None:\n",
    "    features_df = data[\"features\"]\n",
    "    labels_df   = data[\"labels\"]\n",
    "    num_samples = features_df.shape[0]\n",
    "    image_size  = features_df.shape[1]\n",
    "\n",
    "    print(f\"Transforming {num_samples} samples...\")\n",
    "\n",
    "    # Initialize dataset for images and labels\n",
    "    with h5py.File(output_path, \"w\") as hf:\n",
    "        hf.create_dataset(\n",
    "            \"images\", \n",
    "            shape=(0, 3, image_size, image_size), \n",
    "            maxshape=(None, 3, image_size, image_size), \n",
    "            chunks=(1, 3, image_size, image_size), \n",
    "            dtype=np.float32\n",
    "        )\n",
    "        \n",
    "        hf.create_dataset(\n",
    "            \"labels\", \n",
    "            shape=(0,), \n",
    "            maxshape=(None,), \n",
    "            chunks=(1,), \n",
    "            dtype=np.float32\n",
    "        )\n",
    "        \n",
    "    # Transform samples in batches\n",
    "    batches = batch_value(num_samples, batch_size)\n",
    "    current_idx = 0\n",
    "    for batch in batches:\n",
    "        \n",
    "        # Transform the samples\n",
    "        samples     = features_df[current_idx : (current_idx + batch)]\n",
    "        samples_gaf = gaf(samples)\n",
    "        samples_rp  = recurrence_plot(samples)\n",
    "        samples_mtf = mtf(samples)\n",
    "\n",
    "        # Stack into 3 channels\n",
    "        images_trans = np.stack((samples_gaf, samples_rp, samples_mtf), axis=0) # (3, batch_size, width, height)\n",
    "        images_trans = images_trans.transpose(1, 0, 2, 3) # (batch_size, 3, width, height)\n",
    "\n",
    "        labels_trans = labels_df[current_idx : (current_idx + batch)]\n",
    "\n",
    "        # Store the images\n",
    "        with h5py.File(output_path, \"a\") as hf:\n",
    "            images = hf[\"images\"]\n",
    "            labels = hf[\"labels\"]\n",
    "\n",
    "            images.resize(images.shape[0] + batch, axis=0)\n",
    "            labels.resize(labels.shape[0] + batch, axis=0)\n",
    "\n",
    "            for i, (image, label) in enumerate(zip(images_trans, labels_trans)):\n",
    "                images[i + current_idx] = image\n",
    "                labels[i + current_idx] = label\n",
    "\n",
    "        print(f\"    Completed images {current_idx}-{current_idx + batch}\")\n",
    "\n",
    "        current_idx += batch"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Generate Large Dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "raw_train_df = pd.read_csv(\"Data/mitbih_train.csv\", header=None)\n",
    "raw_test_df = pd.read_csv(\"Data/mitbih_test.csv\", header=None)\n",
    "\n",
    "x_train = raw_train_df.iloc[:, :-1]\n",
    "y_train = raw_train_df.iloc[:, -1]\n",
    "x_test  = raw_test_df.iloc[:, :-1]\n",
    "y_test  = raw_test_df.iloc[:, -1]\n",
    "\n",
    "# smote = SMOTE(sampling_strategy={1: 30000, 2: 20000, 3: 20000, 4: 10000}, random_state=0)\n",
    "# x_train, y_train = smote.fit_resample(x_train, y_train)\n",
    "\n",
    "training_data = {\n",
    "    \"features\": x_train,\n",
    "    \"labels\"  : y_train,\n",
    "}\n",
    "test_data = {\n",
    "    \"features\": x_test,\n",
    "    \"labels\"  : y_test,\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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3Nysq666Si+99FK/73nllVe0fPlyNTU16ZZbbtGePXuKvey8Guw5+OY3vzngdfHTn/7U//of/vAHffSjH1VTU5PuvvtuHT58uBRLR54RA6MVA4l/HmIgpGjGP4kYSAwkBsJDDCQGStGLgcQ/pEUxBkY5/knEQIkYOCI2BL7+9a/bFStW2E2bNtlnnnnGLly40D799NOlXlZB/fCHP7R33XWXPXjwoP/fsWPHbHt7u73kkkvst771Lbt9+3b7jW98w1588cW2vb291EvOm66uLnv33Xfb2bNn21dffdVaa63runbFihX2nnvusdu3b7cPP/ywbWpqsu+++6611tp3333XNjc328cee8xu3brVfv7zn7fLly+3ruuW8lcZscGeA2utve222+wjjzzS73XR0dFhrbW2tbXVLliwwP7mN7+xb775pl21apW98847S/UrII+IgdGJgcQ/DzEQaVGMf9YSA4mBxEB4iIHEwKjFQOIfMkUxBkY1/llLDLSWGDhSgU9+tLe32/nz5/f7R//BD35gV61aVcJVFd4999xjv/3tbw+4/fHHH7cf/vCH/T9k13Xt0qVL7RNPPFHsJRbEtm3b7DXXXGNXrFjR74/9lVdesc3Nzf0C+6233mq/+93vWmutfeihh/q9Jjo6OuzChQv7vW6CYqjnwFprP/jBD9oXX3xx0O/7whe+YL/4xS/6n+/du9fOmTPH7t69u+BrRuEQA/sLcwwk/nmIgUiLavyzlhhIDCQGghhIDIxeDCT+IVNUY2AU45+1xEBriYGjEfi2V1u2bFEikdDChQv921paWtTa2irXdUu4ssLasWOHzjzzzAG3t7a2qqWlRcYYSZIxRhdeeKE2bNhQ3AUWyF//+lctXrxYv/zlL/vd3traqvPPP19jxozxb2tpafF/79bWVi1atMj/Wk1NjebNmxfI52Wo5+DEiRM6cODAoK8LaeBzMHXqVE2bNk2tra2FXC4KjBjYX5hjIPHPQwxEWlTjn0QMzEQM9BADo4cYeOaA24mBnrDGQOIfMkU1BkYx/knEQIkYOBrxUi9gtNra2jR+/HhVVlb6t02aNEnd3d06evSoJkyYUMLVFYa1Vm+99ZZeeuklPfLII0omk1q2bJk+97nPqa2tTeecc06/+0+cOFHbtm0r0Wrz66abbhr09ra2Nk2ZMqXfbRMnTtT+/fuH9fUgGeo52LFjh4wxevjhh/XCCy+ooaFBn/rUp3TttddKkg4ePBia5wB9iIHRiYHEPw8xEGlRjH8SMTAbMdBDDIweYiAxUIpWDCT+IVMUY2BU459EDJSIgaMR+ORHZ2dnv2Anyf+8p6enFEsquL179/q/90MPPaR33nlH3/zmN9XV1TXk8xHW5yLtVL93FJ6XnTt3yhijWbNmadWqVVq7dq2+8pWvqK6uTkuXLlVXV1fon4MoIgYSA4l/HmJg9EQx/knEwGzEQA8xMHqIgcRAiRgoEf+iKooxkPg3EDGQGDgcgU9+VFVVDfgHS39eXV1diiUV3PTp0/Xaa69p3LhxMsZo7ty5cl1XX/jCF3TRRRcN+nyE9blIq6qq0tGjR/vdlvl7D/U6qa+vL9YSC27lypW6/PLL1dDQIEk677zz9Pbbb+sXv/iFli5dOuRzUFNTU4LVIl+IgcRA4p+HGBg9UYx/EjEwGzHQQwyMHmIgMVAiBkrEv6iKYgwk/g1EDCQGDkfgZ340NjbqyJEjSiQS/m1tbW2qrq4O1Ys5W0NDg9/LT5LOPvtsdXd3a/LkyTp06FC/+x46dGhAiVPYNDY2nvT3HurrkydPLtoaC80Y4we7tFmzZunAgQOSovEcRBEx0BPlGEj88xADoyeq8U8iBmYiBnqIgdFDDCQGSsRAifgXVVGNgcS//oiBxMDhCHzyY+7cuYrH4/2G1axbt07z58+X4wT+1xvUiy++qMWLF6uzs9O/7c0331RDQ4NaWlr0+uuvy1oryesJuH79ejU1NZVquUXR1NSkzZs3q6ury79t3bp1/u/d1NSkdevW+V/r7OzUG2+8Earn5Tvf+Y5uu+22frdt2bJFs2bNkjTwOdi3b5/27dsXqucgioiBnijHQOKfhxgYPVGMfxIxMBsx0EMMjB5iIDFQIgZKxL+oimIMJP4NRAwkBg5H4CNCTU2NVq5cqQceeEAbN27Us88+qzVr1uiWW24p9dIKZuHChaqqqtKXv/xl7dy5U88//7wefPBB3XHHHVq2bJmOHz+u1atXa/v27Vq9erU6Ozt15ZVXlnrZBXXRRRdp6tSpuu+++7Rt2zY9+uij2rhxo2644QZJ0vXXX6/169fr0Ucf1bZt23TfffdpxowZWrx4cYlXnj+XX3651q5dq8cee0y7d+/Wz3/+c/32t7/V7bffLkn65Cc/qSeffFKPP/64tmzZonvvvVcf+tCHNHPmzBKvHKNBDCQGEv88xMDoiWL8k4iB2YiBHmJg9BADiYESMVAi/kVVFGMg8W8gYiAxcFhsCHR0dNh7773XNjc32yVLltgf/ehHpV5SwW3dutXedttttrm52V5yySX2e9/7nnVd11prbWtrq125cqWdP3++veGGG+zmzZtLvNrCmD17tn311Vf9z99++21788032wsuuMBeffXV9uWXX+53/+eee85eccUVdsGCBfbWW2+1u3fvLvaS8y77Ofjzn/9sV6xYYefPn2+XLVtm//SnP/W7/xNPPGEvu+wy29zcbO+++257+PDhYi8ZBUAMjF4MJP55iIGIYvyzlhhIDPQQA0EMJAZaG80YSPyDtdGMgVGPf9YSA60lBubKWJuqiQIAAAAAAAAAAAiBwLe9AgAAAAAAAAAAyETyAwAAAAAAAAAAhArJDwAAAAAAAAAAECokPwAAAAAAAAAAQKiQ/AAAAAAAAAAAAKFC8gMAAAAAAAAAAIQKyQ8AAAAAAAAAABAqJD8AAAAAAAAAAECokPwAAAAAAAAAAAChQvIDAAAAAAAAAACECskPAAAAAAAAAAAQKiQ/AAAAAAAAAABAqPx/pAEJ+7cF2HsAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 2000x400 with 5 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize_raw_ecg(training_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "transform_data(\"Data/mitbih_mif_train.h5\", training_data, batch_size=5000)\n",
    "transform_data(\"Data/mitbih_mif_test.h5\", test_data, batch_size=5000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Generate Small Training Set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "raw_train_df = pd.read_csv(\"Data/mitbih_train.csv\", header=None)\n",
    "\n",
    "training_data = {\n",
    "    \"features\": raw_train_df.iloc[60000:, :-1],\n",
    "    \"labels\"  : raw_train_df.iloc[60000:, -1],\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "transform_data(\"Data/mitbih_mif_train_small.h5\", training_data, batch_size=5000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Generate Calibration Datasets For Quantization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def process_data_frame(df, save_path):\n",
    "    training_data = {\n",
    "        \"features\": df.iloc[:, :-1],\n",
    "        \"labels\":   df.iloc[:, -1]\n",
    "    }\n",
    "    transform_data(save_path, training_data, batch_size=1000)\n",
    "\n",
    "\n",
    "def class_distribution(df):\n",
    "    print(df.value_counts(normalize=True))\n",
    "\n",
    "n_samples = 3200\n",
    "\n",
    "# Original dataset\n",
    "print(\"Original dataset class distribution\")\n",
    "raw_train_df = pd.read_csv(\"Data/mitbih_train.csv\", header=None)\n",
    "class_distribution(raw_train_df[187])\n",
    "print()\n",
    "\n",
    "# Random sample\n",
    "random_sample = raw_train_df.sample(n=n_samples, random_state=1)\n",
    "print(\"Processing random sample calibration set\")\n",
    "class_distribution(random_sample[187])\n",
    "process_data_frame(random_sample, \"Data/mitbih_calib_random.h5\")\n",
    "print()\n",
    "\n",
    "# Balanced dataset\n",
    "labels_df = []\n",
    "for label in range(5):\n",
    "    label_filtered_df = raw_train_df[raw_train_df[187] == label]\n",
    "    labels_df.append(label_filtered_df.sample(n=(n_samples//5), random_state=1))\n",
    "\n",
    "balanced_sample = pd.concat(labels_df, ignore_index=True)\n",
    "print(\"Processing balanced sample calibration set\")\n",
    "class_distribution(balanced_sample[187])\n",
    "process_data_frame(random_sample, \"Data/mitbih_calib_balanced.h5\")\n",
    "print()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "machine_learning",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
